package graph_viewer.canvas;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import graph_viewer.experiment.*;
import graph_viewer.gui.*;
import graph_viewer.layout.*;
import graph_viewer.layout.layout_adjuster.*;
import graph_viewer.structure.*;
import graph_viewer.util.*;


//abstract public class Drawer_Canvas extends Container implements MouseListener, MouseMotionListener{
abstract public class Drawer_Canvas extends JComponent implements MouseListener, MouseMotionListener{
	abstract public void draw_initial_view();
	abstract public void adjust_layout( Node a_cluster );
	//abstract public void initialize_experiment_metrics();
	abstract public void mouse_press_action( Node picked_focus );
	abstract public void generate_image();

	//abstract public void do_experiment();
	abstract public void do_static_experiment();
	abstract public void do_dynamic_experiment();
	abstract public void do_visual_complexity_experiment();

	abstract public void reset();

	abstract	public void set_data_file_name( String file_name );
	abstract public String get_data_file_name();
	
	abstract public void set_graph_type( String graph_type );
	abstract public String get_graph_type();	
	

	//@since
	abstract public boolean get_is_positions_set();
	//=============end set canvas enviroment variables===============	
	abstract public void set_graph( Graph a_graph );
	abstract public Graph get_graph();	

	abstract public void  set_canvas_metrics( Canvas_Metrics a_canvas_metrics );
	abstract public Canvas_Metrics  get_canvas_metrics( );

	abstract public void set_animation_board( JComponent an_animation_board );
	abstract public JComponent get_animation_board();

	abstract public void set_layout( Layout a_layout_alg );
	abstract public Layout get_layout();
			
	abstract public void set_layout_adjuster( Layout_Adjuster a_layout_adjuster );
	abstract public Layout_Adjuster get_layout_adjuster();

	abstract public Experiment_Metrics get_base_experiment_metrics();
	abstract public Experiment_Metrics get_target_experiment_metrics();
	
	//============================================================================
	// mouse events 
	//============================================================================
	public void mousePressed(MouseEvent e){}
	public void mouseDragged(MouseEvent e){}
	public void mouseReleased(MouseEvent e){}
	public void mouseMoved(MouseEvent e){}
	public void mouseClicked(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
	public void mouseEntered(MouseEvent e){}	

}